Le paradigme fonctionnel fait évoluer le modèle mental du développeur, passant de "la mise à jour d'une boîte étatique" à l'application de transformations mathématiques des valeurs immuables. En Elixir, les données ne sont jamais modifiées ; elles ne renaissent qu'en nouvelles formes.
1. L'affirmation mathématique
Quand vous écrivez $x = a + 1$, vous n'assignez pas un résultat à une variable. En réalité, vous affirmez simplement affirmant que les expressions $x$ et $a + 1$ ont la même valeur. Cela reflète la logique algébrique où $x$ représente une valeur fixe dans un contexte spécifique.
2. L'immuabilité comme garantie
En Elixir, toutes les valeurs sont immuables. Les données ne peuvent pas être modifiées après leur création. Cela élimine les « effets secondaires » où une fonction pourrait modifier involontairement une variable globale ou un objet passé en paramètre, garantissant que le code est prévisible et sûr en environnement multithread.
3. Transformation versus mutation
Nous ne modifions jamais les données sur place. Elixir n'a pas d'assignation ; au contraire, il essaie de correspondre des valeurs à des motifs. Pour « changer » une valeur, nous passons les données originales à travers une fonction afin de produire une nouvelle version complète.
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (Toujours intact !)